package com.jjr.cosmetology.controller;

import com.jjr.cosmetology.entity.Pic;
import com.jjr.cosmetology.result.ResponseCode;
import com.jjr.cosmetology.result.ResponseData;
import com.jjr.cosmetology.service.PicService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;

import javax.annotation.Resource;
import javax.print.DocFlavor;

/**
 * (Pic)表控制层
 *
 * @author makejava
 * @since 2021-06-22 23:07:14
 * get post delete put patch
 * http://localhost:8080/pic/select?id=1       key-value
 * resetful风格接口设计   ---它是一个接口设计规范
 * 原生：http://localhost:8080/pic/selectOne?id=1
 * //一般满足GET请求 //当参数超过三个以后，将数据放在请求体中
 * http://localhost:8080/pics/1
 * http://localhost:8080/pics/1/xiyang/1
 * //当数据需要放在请求体中的时候，可以采用POST DELETE PUT PATCH
 * http://localhost:8080/pics                  {id:1,name:"xiyang"} 前端使用AJAX的时候申明请求方式 type:POST
 *http://localhost:8080/pics                  {id:1,name:"xiyang"} 前端使用AJAX的时候申明请求方式 type:PUT
 * GET请求使用在查询操作
 * POST请求使用在增加操作
 * DELETE请求使用在删除操作
 * PUT请求使用修改在操作 修改所有字段，每次请求必须为每个字段赋值，否则将会置为空
 * PATCH请求使用在修改操作   修改具体某个字段
 *  //如何接收请求中的参数
 *  http://localhost:8080/pics/1
 */
@Api("PicApi")
@RestController //@Controller+@ResponseBody
@RequestMapping("pics")
public class PicController {
    /**
     * 服务对象
     * @resource 自动装配  根据名字去匹配对象
     * @Autowired 根据类型进行匹配
     */
    @Autowired
    private PicService picService;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     * @responseBody   将返回值转化为json数据格式
     */
//    @ApiIgnore //让swagger忽略这个api
//    @GetMapping("select")
//    public Pic selectOne(Integer id) {
//        //在方法的参数中自动映射请求的参数(参数的名称要等于请求参数的key)
//        //拦截请求
//        //接受请求参数
//        //调用服务层服务 ---需要使用服务层对象里面的方法
//            //获取服务层对象
//            //通过服务咸亨对象调用对应的函数
//        Pic pic = picService.queryById(id);
//
//
//        //接受服务层返回的数据并且将数据返回给前端
//        return pic;
//    }

    /**
     * http://localhost:8080/pics?id=1
     * http://localhost:8080/pics/1 key-value
     * @param type
     * @return
     */
    @ApiOperation(value = "queryByType", notes = "通过图片的类型获取对应的轮播图片或者是导航图片")
    @ApiImplicitParam(name = "type", value = "图片的类型")
    @GetMapping("/{type}")
//    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public ResponseData queryByType(@PathVariable String type){
        return picService.queryByType(type);
    }

    @GetMapping("/v1/{id}")
    public ResponseData queryById(@PathVariable Integer id){
        return new ResponseData(ResponseCode.SUCCESS,picService.queryById(id));
    }

    /**
     * http://localhost:8080/pics/
     * 使用resetful风格设计接口，数据的交互方式为json数据格式
     * @param pic
     * @return
     */
//    @PostMapping("/")
//    public Pic upPic(@RequestBody Pic pic){
//        return pic;
//    }
//
//    /**
//     * http://localhost:8080/pics/v1  post
//     * @param file
//     * @return
//     */
//    @PostMapping("/v1")
//    public Pic up(MultipartFile file){
//        return null;
//    }
//
//    @ApiOperation(value = "deleteById", notes = "根据图片id删除对应的图片")
//    @ApiImplicitParam(name = "id", value = "图片id", dataType = "int")
//    @ApiImplicitParams({
//            @ApiImplicitParam(name = "id", value = "图片id", dataType = "int"),
//            @ApiImplicitParam(name = "title", value = "图片标题")
//    })
//    @DeleteMapping("/{id}/{title}")
//    public Pic deleteById(@PathVariable Integer id,@PathVariable String title){
//        return null;
//    }
}
